const orderUtils = require('../../utils/order')

Page({
  data: {
    // 门店信息
    storeInfo: {
      name: '呼和浩特诺和木勒凯...',
      distance: 4.9,
      status: '3杯饮品制作中，预计等待5分钟以内',
      statusColor: '#28a745' // 绿色状态
    },

    // 配送和用餐方式
    deliveryType: 'self', // 配送方式：self-自取，takeout-外卖
    timeOption: '立即取餐', // 取餐时间
    diningType: 'dineIn', // 用餐方式：dineIn-堂食，takeAway-打包
    dineInSelected: true, // 默认选中店内堂食
    takeAwaySelected: false,
    selectedPickupTimeIndex: 0, // 取餐时间默认选中索引
    pickupTimeOptions: ['立即取餐', '18:00~20:00', '20:00~22:00'], // 取餐时间选项

    // 购物车数据
    orderList: [], // 订单商品列表（从本地存储获取）
    cartItems: [], // 购物车商品
    totalPrice: 0, // 总价
    discount: 0, // 优惠金额
    finalPrice: 0, // 最终价格

    // 精选搭配商品
    recommendedProducts: [{
        id: '02',
        name: '松松咸蛋黄嘟嘟',
        image: 'https://nayukis-tea.oss-cn-hangzhou.aliyuncs.com/dev/static/images/h.jpg',
        originalPrice: 13.8,
        currentPrice: 13,
        selected: false
      },
      {
        id: '03',
        name: '南瓜嘟嘟',
        image: 'https://nayukis-tea.oss-cn-hangzhou.aliyuncs.com/dev/static/images/i.jpg',
        originalPrice: 13.8,
        currentPrice: 13,
        selected: false
      },
      {
        id: '04',
        name: '256层焦糖蛋挞',
        image: 'https://nayukis-tea.oss-cn-hangzhou.aliyuncs.com/dev/static/images/k.jpg',
        originalPrice: 10,
        currentPrice: 9,
        selected: false
      }
    ],

    // 订单数据
    orderData: {
      orderId: "order" + Date.now(),
      amount: 0.01,
      description: "订单order" + Date.now() + "支付",
      openid: "oLdZf7Hckxk3Udup67UOZRmcl8WA",
      products: [],
      metadata: {
        source: "miniprogram",
        clientTime: (new Date()).toUTCString(),
        orderTitle: "订单(2件商品)"
      }
    },

    // 用户信息
    token: '',
    isCreatingOrder: false,
    formattedTime: '',
    showPaymentSuccess: false,

    // 支付方式
    paymentMethod: 'wechatPay', // 默认选择微信支付
    memberBalance: 0, // 会员余额，默认为0

    // 备注
    remark: '', // 订单备注
    showRemarkModal: false, // 是否显示备注弹窗
  },

  // 切换配送方式
  switchDelivery(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({
      deliveryType: type
    });
  },

  // 打开取餐时间选择器
  openTimePicker() {
    wx.showActionSheet({
      itemList: ['立即取餐', '10:00', '10:30', '11:00'],
      success: (res) => {
        this.setData({
          timeOption: res.tapIndex === 0 ? '立即取餐' : `预约${res.itemList[res.tapIndex]}`
        });
      }
    });
  },

  // 切换用餐方式
  changeDiningType(e) {
    this.setData({
      diningType: e.detail.value
    });
  },

  // 打开杯贴定制
  openCupCustom() {
    wx.navigateTo({
      url: '/pages/cupCustom/cupCustom'
    });
  },

  // 处理精选搭配商品选择变化 - 现在支持取消选择
  toggleRecommendedProduct(e) {
    const productId = e.currentTarget.dataset.id;

    // 查找被点击的商品
    const productIndex = this.data.recommendedProducts.findIndex(item => item.id === productId);
    if (productIndex === -1) return;

    // 创建更新后的推荐商品数组
    const updatedRecommendedProducts = [...this.data.recommendedProducts];

    // 切换选中状态 - 如果之前已选中则取消，否则选中
    updatedRecommendedProducts[productIndex] = {
      ...updatedRecommendedProducts[productIndex],
      selected: !updatedRecommendedProducts[productIndex].selected
    };

    this.setData({
      recommendedProducts: updatedRecommendedProducts
    });

    // 重新计算总价
    this.calculateTotalPrice();
  },

  // 计算总价（包含精选搭配、购物车商品和优惠）
  calculateTotalPrice() {
    // 获取购物车商品总价
    const cartTotalPrice = this.data.orderList.reduce((sum, item) => sum + (item.price || 0), 0);

    // 获取选中的精选搭配商品价格
    const selectedProduct = this.data.recommendedProducts.filter(item => item.selected);
    const selectedProductTotal = selectedProduct.reduce((s, p) => s + p.currentPrice, 0)
    const recommendedProductPrice = selectedProduct.length ? selectedProductTotal : 0;

    // 计算最终总价（不含优惠）
    const subtotal = cartTotalPrice + recommendedProductPrice;

    // 计算优惠金额
    const discount = subtotal >= 30 ? 5 : 0; // 示例优惠规则

    // 计算最终价格
    const finalPrice = subtotal - discount;

    this.setData({
      totalPrice: subtotal,
      discount: discount,
      finalPrice: finalPrice
    });
  },

  // 处理取餐时间变化
  handlePickupTimeChange(e) {
    const selectedIndex = e.detail.value;
    this.setData({
      selectedPickupTimeIndex: selectedIndex
    });
  },

  // 处理堂食/打包选择变化
  handleDineTakeawayChange(e) {
    const value = e.detail.value;
    if (value === 'dineIn') {
      this.setData({
        dineInSelected: true,
        takeAwaySelected: false
      });
    } else {
      this.setData({
        dineInSelected: false,
        takeAwaySelected: true
      });
    }
  },

  // 跳转到杯贴留言定制页面
  goToCustomizeMessage() {
    wx.navigateTo({
      url: '/pages/cup-message-customize/cup-message-customize'
    });
  },

  // 跳转到储值页面
  goToRecharge() {
    wx.navigateTo({
      url: '/pages/recharge/recharge'
    });
  },

  // 跳转到支付页面
  goToPayment() {
    wx.navigateTo({
      url: '/pages/payment/payment'
    });
  },

  // 页面加载时
  onLoad() {
    // 获取用户token和openid
    const token = wx.getStorageSync('token');
    const openid = wx.getStorageSync('openid');

    // 从本地存储获取订单数据
    const orderData = wx.getStorageSync('orderData') || [];

    // 设置页面数据
    this.setData({
      token,
      'orderData.openid': openid || this.data.orderData.openid,
      orderList: orderData
    });

    console.log('传递的数据', orderData);

    // 更新订单商品数据
    const products = orderData.map(item => {
      return {
        id: item.id,
        name: item.name,
        aa1: "每日500蔬果瓶",
        aa2: "瘦瘦轻盈",
        text: "膳食纤维 | 超级食材羽衣&橙",
        price: item.price || item.totalPrice || 0,
        image: item.image,
        quantity: item.count || item.quantity || 1
      }
    })

    this.setData({
      'orderData.products': products,
      'orderData.amount': products.reduce((acc, o) => (o.price || 0) + acc, 0)
    });

    // 格式化时间显示
    const clientTime = this.data.orderData.metadata.clientTime;
    const date = new Date(clientTime);
    const formattedTime = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;

    this.setData({
      formattedTime
    });

    // 页面加载完成后计算总价
    // 延迟执行以确保页面数据已更新
    setTimeout(() => {
      this.calculateTotalPrice();
    }, 0);
  },

  // 页面显示时
  onShow() {
    // 从本地存储获取购物车数据
    const cartItems = wx.getStorageSync('shoppingCart') || [];
    this.setData({
      cartItems
    });

    // 计算总价
    this.calculateTotal(cartItems);
  },

  // 创建订单
  createOrder() {
    if (this.data.isCreatingOrder) {
      return;
    }

    if (!this.data.token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    // 检查支付方式
    if (this.data.paymentMethod === 'memberBalance' && this.data.memberBalance <= 0) {
      wx.showToast({
        title: '会员余额不足，请选择其他支付方式',
        icon: 'none'
      });
      return;
    }

    this.setData({
      isCreatingOrder: true
    });

    // 更新订单的时间戳
    const orderData = this.data.orderData;
    orderData.metadata.clientTime = new Date().toISOString();

    // 根据支付方式调整订单数据

    const updatedOrderData = {

      ...orderData,

      paymentMethod: this.data.paymentMethod, // 添加支付方式信息

      remark: this.data.remark // 添加备注信息

    };

    // 调用支付流程
    orderUtils.processPayment(updatedOrderData, this.data.token)
      .then(result => {
        console.log('支付成功:', result);
        // 显示支付成功对话框
        this.setData({
          showPaymentSuccess: true
        });
        
        // 将支付成功的订单数据存储到本地
        const orderlist = wx.getStorageSync('orderlist') || { orders: [] };
        const newOrder = {
          ...updatedOrderData,
          status: 'SUCCESS',
          createdAt: new Date().toISOString(),
          formattedTime: new Date().toLocaleString(),
          storeName: this.data.storeInfo.name,
          deliveryType: this.data.deliveryType
        };
        
        // 添加新订单到订单列表开头
        orderlist.orders.unshift(newOrder);
        
        // 限制订单列表长度为20条
        if (orderlist.orders.length > 20) {
          orderlist.orders = orderlist.orders.slice(0, 20);
        }
        
        // 存储到本地
        wx.setStorageSync('orderlist', orderlist);
      })
      .catch(error => {
        console.log('支付失败:', error);
        if (error.cancelled) {
          wx.showToast({
            title: '已取消支付',
            icon: 'none'
          });
        } else {
          wx.showToast({
            title: error.message || '支付失败',
            icon: 'error'
          });
        }
      })
      .finally(() => {
        // 支付完成后的清理工作
        this.setData({
          isCreatingOrder: false
        });
        // 跳转到订单列表页
        setTimeout(() => {
          wx.reLaunch({
            url: `/pages/ofg/ofg`
          });
        }, 1500);
      });
  },

  // 关闭支付成功提示
  closePaymentSuccess() {
    this.setData({
      showPaymentSuccess: false
    });
  },

  // 加载购物车商品
  loadCartItems() {
    const cartItems = wx.getStorageSync('shoppingCart') || [];
    this.calculateTotal(cartItems);
  },

  // 计算购物车商品总价
  calculateTotal(cartItems) {
    // 只更新购物车数据，不直接计算总价
    this.setData({
      cartItems
    });

    // 调用统一的总价计算函数
    this.calculateTotalPrice();
  },

  // 减少商品数量
  decreaseQuantity(e) {
    const index = e.currentTarget.dataset.index;
    let cartItems = [...this.data.cartItems];

    if (cartItems[index].quantity > 1) {
      cartItems[index].quantity -= 1;
      cartItems[index].totalPrice = (cartItems[index].price || 0) * cartItems[index].quantity;
      wx.setStorageSync('shoppingCart', cartItems);
      this.calculateTotal(cartItems);
    } else {
      // 数量为1时，直接删除商品
      this.removeItem(index);
    }
  },

  // 增加商品数量
  increaseQuantity(e) {
    const index = e.currentTarget.dataset.index;
    let cartItems = [...this.data.cartItems];

    cartItems[index].quantity += 1;
    cartItems[index].totalPrice = (cartItems[index].price || 0) * cartItems[index].quantity;
    wx.setStorageSync('shoppingCart', cartItems);
    this.calculateTotal(cartItems);
  },

  // 删除商品
  removeItem(index) {
    let cartItems = [...this.data.cartItems];
    cartItems.splice(index, 1);
    wx.setStorageSync('shoppingCart', cartItems);
    this.calculateTotal(cartItems);
  },

  // 支付方式变化处理
  onPaymentMethodChange(e) {
    const value = e.detail.value;
    // 仅在余额充足时允许选择会员支付
    if (value === 'memberBalance' && this.data.memberBalance <= 0) {
      // 如果尝试选择余额不足的会员支付，保持当前选择
      return;
    }
    this.setData({
      paymentMethod: value
    });
  },

  // 选择支付方式（处理点击事件）
  selectPaymentMethod(e) {
    const method = e.currentTarget.dataset.method;
    // 仅在余额充足时允许选择会员支付
    if (method === 'memberBalance' && this.data.memberBalance <= 0) {
      wx.showToast({
        title: '会员余额不足',
        icon: 'none'
      });
      return;
    }
    this.setData({
      paymentMethod: method
    });
  },

  // 打开备注弹窗
  openRemarkModal() {
    this.setData({
      showRemarkModal: true
    });
  },

  // 关闭备注弹窗
  closeRemarkModal() {
    this.setData({
      showRemarkModal: false
    });
  },

  // 备注输入处理
  onRemarkInput(e) {
    this.setData({
      remark: e.detail.value
    });
  },

  // 确认备注
  confirmRemark() {
    this.setData({
      showRemarkModal: false
    });
  },
})